package util1;
import com.iflytek.view.MeTest;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TalkRobot extends JFrame implements ActionListener, KeyListener {
    public static void main(String[] args) {
        //调用构造方法
        new TalkRobot();
    }
    //创建青云客的机器人实现类
    QingYunkeRobotServiceImpl qingyunkeRobotService = new QingYunkeRobotServiceImpl();
    ImageIcon bg = new ImageIcon("F:/orange_bank.jpg");    //创建一个背景图片

    /*属性*/
    //文本域
    private JTextArea jta;
    //滚动条
    private JScrollPane jsp;
    //面板
    private JPanel jp;
    //文本框
    private JTextField jtf;
    //按钮
    private JButton jb;

    //
    Font font;



    //构造方法
    public TalkRobot() {
        this.setIconImage(Toolkit.getDefaultToolkit().createImage("res/bank_of_china.png"));

        //初始化组件
        jta = new JTextArea();
        //设置文本域默认不可编辑
        jta.setEditable(false);
        //注意：需要将文本域添加到滚动条中，实现文本效果
        jsp = new JScrollPane(jta);
        //面板
        jp = new JPanel();
        //文本框
        jtf = new JTextField(10);
        jb = new JButton("发送");
        //需要将文本框与按钮添加到面板中
        jp.add(jtf);
        jp.add(jb);
        font = new Font("宋体", Font.BOLD, 15);
        jta.setBounds(5, 5, bg.getIconWidth(), bg.getIconHeight());

        //注意：
        this.add(jsp, BorderLayout.CENTER);
        this.add(jp, BorderLayout.SOUTH);

        //注意：需要设置标题，大小，位置，关闭是否可见
        this.setTitle("智能机器人聊天客户端");
        this.setSize(600, 400);
        this.setLocation(900, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体关闭，程序就退出
        this.setVisible(true);


/*****************客户端start******************************/
        //给发送按钮绑定一个监听点击事件
        jb.addActionListener(this);
        //给文本框绑定一个键盘监听事件
        jtf.addKeyListener(this);


/*****************客户端******************************/


    }

    @Override
    public void actionPerformed(ActionEvent e) {


        try {
            sendDataToSocket();
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }

    }


    @Override
    public void keyPressed(KeyEvent e) {
        //回车键
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {

            //发送数据到
            try {
                sendDataToSocket();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }

    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyReleased(KeyEvent e) {

    }

    private void sendDataToSocket() throws IOException {
        //1.获取文本框中需要发送的数据内容
        String text = jtf.getText();
        //2.拼接内容
        if (text.equals("")) {
            JOptionPane.showMessageDialog(null, "输入值不能为null");
        } else {
            //3.修改字体
            jta.setFont(font);
            //2.拼接内容
            String date_ch = null;
            try {
                date_ch = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            }catch (Exception e){
                e.printStackTrace();
            }

            jta.append("\t" + date_ch + System.lineSeparator());
            jta.append("\n");

            jta.append("客戶:" + text + System.lineSeparator());

            System.out.println("发送中，请稍等");

            Response response = qingyunkeRobotService.answer(text);
            try {
                String words=new String(response.getContent().getBytes(), "UTF-8").replace("{br}", "\n");

                System.out.println(words);
                jta.append("小助手:" + words + System.lineSeparator());
                jta.append("\n");
                new MeTest(words);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }//5.清空
            jtf.setText("");
        }
    }
}

